home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / cad / printgl.zip / PRINTGL2.DOC < prev    next >
Text File  |  1996-04-02  |  35KB  |  787 lines

  1.  
  2.  
  3.  
  4.                 PrintGL 1.58 Plotfile Commands and Program Interface
  5.  
  6.                     (c) Copyright Ravitz Software Inc. 1990,1996
  7.  
  8.  
  9.        Ravitz Software Inc.                BBS/fax               606-268-0577
  10.        PO Box 25068
  11.        Lexington, KY  40524-5068           Compuserve  Cary Ravitz [70431,32]
  12.        USA                                 Internet   70431.32@compuserve.com
  13.  
  14.  
  15.        ------------------------------ Contents ------------------------------
  16.  
  17.        PrintGL Initial Information File ......................... PRINTGL.TXT
  18.        PrintGL Documentation File                                 PRINTGL.DOC
  19.        Introduction ....................................................... 3
  20.        HP-GL Commands                                                       3
  21.        HP-GL/2 Commands .................................................. 11
  22.        ADI Commands                                                        13
  23.        HP-GL Character Sets .............................................. 14
  24.        Program Interface                                                   16
  25.  
  26.                                                                           p-3
  27.        Introduction ---------------------------------------------------------
  28.  
  29.          This  document  includes  a  description  of  the  subset  of  HP-GL
  30.          (Hewlett-Packard  Graphics  Language),  HP-GL/2,  and ADI  (Autodesk
  31.          Device  Interface) that  is  supported by PrintGL.  If you are using
  32.          PrintGL  to work with commercial  graphics  software,  then you will
  33.          probably not need  this information.  If you  are  writing  graphics
  34.          software you will  find here  the  information needed  to  make your
  35.          output compatible with PrintGL.
  36.  
  37.          The program interface to PrintGL is also documented here.
  38.  
  39.        HP-GL Commands -------------------------------------------------------
  40.  
  41.          PrintGL's HP-GL specification is taken from the  programming manuals
  42.          for the HP 7475A, ColorPro (7440/17440), and 7550A.  The 7550 manual
  43.          is  the  best reference for HP-GL - HP  manual 07550-90001.  PrintGL
  44.          supports  the 7475, and 7440/17440 command sets except for character
  45.          set 8 (Katakana), digitize commands, output commands, the error mask
  46.          command, and some device control  commands.  Supported commands  are
  47.          listed below.  Commands that are not applicable to printing, such as
  48.          pen velocity, are  considered supported  but are completely ignored.
  49.          Commands that are not supported are flagged and then ignored.
  50.  
  51.          In addition, PG,  AF, ES, LO, the enhanced IW command, character set
  52.          5, and proportional spaced fonts, from the 7550, are supported.  And
  53.          forty pens are allowed instead of eight.
  54.  
  55.          In reading a plotfile, PrintGL ignores carriage returns, line feeds,
  56.          and nulls  except where  they may be valid characters (LB,  SM,  DT,
  57.          esc.), and ASCII EOF (026) is interpreted as an end of file mark.
  58.  
  59.          AA x_center , y_center , arc_angle [, chord_angle]
  60.  
  61.            Arc absolute - AA moves  the pen through  an arc,  starting at the
  62.            current position, with the pen in the current up/down state.
  63.  
  64.          AF
  65.  
  66.            Advance full page -  AF  starts  a new plot.  PrintGL starts every
  67.            page with the pen up at 0,0.
  68.  
  69.          AP
  70.  
  71.            Automatic pen pickup - IGNORED
  72.  
  73.          AR x_center_delta , y_center_delta , arc_angle [, chord_angle]
  74.  
  75.            Arc  relative  - AR moves the pen through an arc, starting at  the
  76.            current position, with the pen in the current up/down state.
  77.  
  78.          AS
  79.  
  80.            Acceleration select - IGNORED                                     
  81.  
  82.                                                                           p-4
  83.          CA character_set
  84.  
  85.            Designate alternate character set - See HP-GL Character Sets for a
  86.            list of character sets.
  87.  
  88.          CI radius [, chord_angle]
  89.  
  90.            Circle - CI draws a circle centered at the  current position.  The
  91.            current up/down state and position are unchanged by a CI command.
  92.  
  93.          CP [spaces , lines]
  94.  
  95.            Character plot  - CP moves the pen by character spaces (+ is along
  96.            the text)  and lines  (+ is up), using  the current up/down state.
  97.            Using no parameters is the same as a carriage return/line feed.
  98.  
  99.          CS character_set
  100.  
  101.            Designate standard character set - See HP-GL Character Sets for  a
  102.            list of character sets.
  103.  
  104.          CV
  105.  
  106.            Curved line generator - IGNORED
  107.  
  108.          DF
  109.  
  110.            Default values -  This  sets  default  values  for  the  following
  111.            commands: CA, CS,  DR, DT, ES, FT, IW, LO, LT, PA, PT, SC, SM, SL,
  112.            SR, SS, TL.
  113.  
  114.          DI [run , rise]
  115.  
  116.            Absolute  character direction - DI sets the baseline direction for
  117.            labels. The default is 1,0.
  118.  
  119.          DR [run , rise]
  120.  
  121.            Relative character direction - DR sets the  baseline direction for
  122.            labels. Run and rise are a percentage of P2X-P1X and P2Y-P1Y.  The
  123.            default is 1,0.
  124.  
  125.          DTt
  126.  
  127.            Define label terminator - The label terminator ends an LB command.
  128.            The default is ASCII 003.
  129.  
  130.          EA x_opposite_corner , y_opposite_corner
  131.  
  132.            Edge  rectangle  absolute  - EA draws a rectangle  defined by  the
  133.            current position and the parameters.  The pen position and up/down
  134.            state are unchanged.
  135.  
  136.          EC
  137.  
  138.            Enable cutter - IGNORED                                           
  139.  
  140.                                                                           p-5
  141.          EP
  142.  
  143.            Edge polygon - EP draws the current polygon edge.  Any pen up/down
  144.            used in creating the polygon is respected in drawing the edge.
  145.  
  146.          ER x_opposite_corner_delta , y_opposite_corner_delta
  147.  
  148.            Edge  rectangle relative  -  ER  draws  a rectangle  with  corners
  149.            defined by  the current position  and the command parameters.  The
  150.            current pen position and up/down state are unchanged.
  151.  
  152.          ES [ space [, line]]
  153.  
  154.            Extra space  - ES adds to the  space between characters and lines.
  155.            The  units  are in  character  cells  (1.5*width,  2*height).  The
  156.            allowed range is -1 to 1. -.3333 causes characters to touch.
  157.  
  158.          EW radius , start_angle , sweep_angle [, chord_angle]
  159.  
  160.            Edge  wedge - EW draws a wedge centered  at the  current position.
  161.            The current pen position and up/down state are unchanged.
  162.  
  163.          FP
  164.  
  165.            Fill polygon - FP fills the current polygon.  Pen up/down commands
  166.            used in creating the polygon are ignored.
  167.  
  168.            There is a limit of 4000 fill line segments per polygon.
  169.  
  170.          FS
  171.  
  172.            Force select - IGNORED
  173.  
  174.          FT [type [, spacing [, angle]]]
  175.  
  176.            Fill type - These are the fill types.  Type 2 is identical to type
  177.            1 for PrintGL.
  178.  
  179.              1  solid lines spaced at half the pen thickness (see PT command)
  180.              2  unidirectional solid lines spaced at half the pen thickness
  181.              3  lines at the specified spacing
  182.              4  cross hatched lines at the specified spacing
  183.              5  type ignored
  184.  
  185.            A spacing  parameter  of 0 sets  the  spacing  to 1%  of the P1-P2
  186.            diagonal. Spacing is in x axis units (this is only relevant if the
  187.            axes have different scaling).  PrintGL supports any  integer angle
  188.            for fill. Cross hatched lines are at angle + 90.
  189.  
  190.          GM
  191.  
  192.            Graphics Memory - IGNORED
  193.  
  194.          IN
  195.  
  196.            Initialize                                                        
  197.  
  198.                                                                           p-6
  199.          IP [p1x , p1y [, p2x , p2y]]
  200.  
  201.            Sets scaling points P1 and P2 - IP sets the scaling points (P1 and
  202.            P2) in plotter units.  P1  and P2 are used by several commands  to
  203.            help with size independent plots.
  204.  
  205.          IW [x_lower_left , y_lower_left , x_upper_right , y_upper_right]
  206.  
  207.            Input window - IW sets a clipping window in plotter units. With no
  208.            parameters, the clipping window is turned off.
  209.  
  210.            If  PrintGL's  /YE switch is  set and user  scaling  is on then IW
  211.            parameters are in user units.  In this case the window is rescaled
  212.            with an IP command, but any SC command locks the current window.
  213.  
  214.          LB..text..terminator
  215.  
  216.            Label - Labels use the current character set, based on CA, CS, SA,
  217.            and SS commands. See HP-GL Character Sets for font specifics.
  218.  
  219.          LO [ position_number ]
  220.  
  221.            Label origin -  LO  sets  the  label  origins,  shown  below.  For
  222.            positions 4..9  and  14..19  the  label buffer is  limited  to 150
  223.            characters. The default is 1.
  224.  
  225.            13                     16                      19
  226.               3......  .......  ...6...  .......  ......9
  227.               .     .  .     .  .     .  .     .  .     .
  228.            12 2     .  .     .  .  5  .  .     .  .     8 18
  229.               .     .  .     .  .     .  .     .  .     .
  230.               1......  .......  ...4...  .......  ......7
  231.            11                     14                      17
  232.  
  233.          LT [pattern_number [, pattern_length]]
  234.  
  235.            Line  type  - PrintGL's line type patterns are close  to, but  not
  236.            identical  to HP's.  Pattern  length is a  percentage of the P1-P2
  237.            diagonal with a default of 4%  and a minimum of 4 dots for types 1
  238.            and 2 and 16 dots for other types.  Negative (adaptive) line types
  239.            from the HP 7550 are supported.
  240.  
  241.            no parameter  solid            1  .               .
  242.                                           2  ________        ________
  243.            0             dots at          3  ____________    ____________
  244.                          endpoints        4  ____________  . ____________  .
  245.                          only             5  __________  __  __________  __
  246.                                           6  ______  __  __  ______  __  __
  247.                                           7  __________  . . __________  . .
  248.                                           8  ______  . __  . ______  . __  .
  249.  
  250.          PA [x , y] [, x , y] ...
  251.  
  252.            Plot absolute - PA sets absolute mode and optionally moves the pen
  253.            in the current up/down state.                                     
  254.  
  255.                                                                           p-7
  256.          PD [x , y] [, x , y] ...
  257.  
  258.            Pen down - PD sets the pen  down and optionally moves it with  the
  259.            current absolute/relative mode.
  260.  
  261.          PG [i]
  262.  
  263.            New page - PG starts a new plot. The parameter is ignored. PrintGL
  264.            starts every page with the pen up at 0,0.
  265.  
  266.          PM i
  267.  
  268.            Polygon mode - PM  0 starts polygon mode.  The current position is
  269.            the first point in the polygon.
  270.  
  271.            PM 1 starts  a new  subpolygon.  The  position after the next  pen
  272.            movement is the first point in the subpolygon.  The first pen move
  273.            of a subpolygon is done with the pen up, regardless of the current
  274.            up/down status.
  275.  
  276.            PM 2 ends polygon mode.
  277.  
  278.            PM  1 and PM 2 close  the current subpolygon with  the current pen
  279.            up/down state. If used without first starting polygon mode (PM 0),
  280.            PrintGL adds an implied PM 0 before processing the PM 1 or PM 2.
  281.  
  282.            The following  commands are accepted in polygon  mode: PM, PA, PR,
  283.            PU, PD,  AA,  AR,  CI  (circles  are  automatically  prefixed  and
  284.            suffixed by PM 1), and IN.
  285.  
  286.            The polygon buffer is limited to 1000 data points.
  287.  
  288.          PR [x_delta , y_delta] [, x_delta , y_delta] ...
  289.  
  290.            Plot relative - PR sets relative mode and optionally moves the pen
  291.            in the current up/down state.
  292.  
  293.          PS
  294.  
  295.            Paper size - IGNORED
  296.  
  297.            PrintGL ignores PS. The paper size must be set with the /L option.
  298.  
  299.          PT [thickness]
  300.  
  301.            Pen  thickness - PT specifies twice the line spacing used in solid
  302.            fills and may be from 0 to 5.0 mm.  It is reset to .3 mm with each
  303.            SP command.
  304.  
  305.          PU [x,y] [,x,y] ...
  306.  
  307.            Pen  up  - PU  raises  the pen and optionally  moves  it with  the
  308.            current absolute/relative mode.                                   
  309.  
  310.                                                                           p-8
  311.          RA x_opposite_corner , y_opposite_corner
  312.  
  313.            Shade  rectangle  absolute  -  RA  fills  a rectangle with corners
  314.            defined  by the current position and the  command parameters.  The
  315.            current  pen  position  and  up/down  state  are  unchanged.   The
  316.            rectangle edge is not drawn.
  317.  
  318.          RO [angle]
  319.  
  320.            Rotate coordinate  system - RO or RO0  sets up a normal coordinate
  321.            system.  RO90, the only other allowed value, sets up a system that
  322.            is rotated 90 degrees.  The type of rotation depends on  the paper
  323.            size.  This command  does  not change the scaling points, so an IP
  324.            command is useful after an RO.
  325.  
  326.            The HP 7475 specifies two different meanings for RO90 depending on
  327.            the  paper  size (A/A4 or B/A3).  PrintGL  decides  which  type of
  328.            rotation to do based on the sum of  the  print  window  width  and
  329.            height.  If this sum  is  greater than 24 inches  then large paper
  330.            rotation is used. Otherwise, small paper rotation is used.
  331.  
  332.            Small paper rotation:              Large paper rotation:
  333.  
  334.            RO 0             RO 90             RO 0             RO 90
  335.  
  336.              y --------    0,0 -------- y     0,0 -------- y    y --------
  337.               |        |      |        |         |        |      |        |
  338.               |        |      |        |         |        |      |        |
  339.            0,0 -------- x    x --------          |        |      |        |
  340.                                                  |        |      |        |
  341.                                                  |        |      |        |
  342.                                                  |        |      |        |
  343.                                                 x --------    0,0 -------- x
  344.  
  345.          RR x_opposite_corner_delta , y_opposite_corner_delta
  346.  
  347.            Shade  rectangle  relative -  RR fills  a rectangle  with  corners
  348.            defined by  the current position and the  command parameters.  The
  349.            current  pen  position  and  up/down  state  are  unchanged.   The
  350.            rectangle edge is not drawn.
  351.  
  352.          SA
  353.  
  354.            Select alternate  character  set  -  SA  specifies  the  alternate
  355.            character set as current.  The alternate character set  is  chosen
  356.            with CA.
  357.  
  358.          SC [xmin , xmax , ymin , ymax]  or  SC xmin,xrto,ymin,yrto,2
  359.  
  360.            Scaling - SC sets user units. The units are defined by user values
  361.            for  P1 (xmin,ymin)  and P2 (xmax,ymax)  or P1 and  the  ratio  of
  362.            plotter to user units.  Using no parameters turns scaling off, and
  363.            subsequent drawing is done in plotter units (1/1016 inch).        
  364.  
  365.                                                                           p-9
  366.          SI [width , height]
  367.  
  368.            Character size absolute - SI sets the capital letter box width and
  369.            height in centimeters.  Letter  spacing  is 1.5 *  width  and line
  370.            spacing  is 2 * height.  Using no parameters with B or A3 paper is
  371.            the same as  SI.285,.375  and  any  other  paper is  the  same  as
  372.            SI.187,.269.
  373.  
  374.          SL [tan_angle]
  375.  
  376.            Character slant - SL sets  the character  slant.  The parameter is
  377.            interpreted as the tangent  of  the angle from vertical.  Using no
  378.            parameter sets the slant to 0 degrees.
  379.  
  380.          SM[c]
  381.  
  382.            Symbol mode  -  SM sets symbol mode, which centers the symbol mode
  383.            character  at  any plotted point.  Any character from ASCII 033 to
  384.            127 except ";" sets symbol mode.  Any other character turns symbol
  385.            mode off.
  386.  
  387.          SP pen_number
  388.  
  389.            Select pen - SP selects a pen.  Using 0 or no parameter stores the
  390.            pen  without selecting a new pen.  This is usually done at the end
  391.            of a plot. PrintGL ignores any drawing with pen 0.
  392.  
  393.          SR [width , height]
  394.  
  395.            Character size relative - SR sets the capital letter box width and
  396.            height as a percentage of  P2X-P1X and P2Y-P1Y.  Letter spacing is
  397.            1.5 * width and line spacing is 2 * height. Using no parameters is
  398.            the same as SR.75,1.5.
  399.  
  400.          SS
  401.  
  402.            Select  standard  character  set  -  SS   specifies  the  standard
  403.            character  set as  current.  The standard character set  is chosen
  404.            with CS.
  405.  
  406.          TL [positive_length [, negative length]]
  407.  
  408.            Tick length -  TL  sets the  tick lengths used by XT and  YT.  The
  409.            parameters are lengths above  and  below the current position as a
  410.            percentage of P2Y-P1Y for x-axis ticks and a percentage of P2X-P1X
  411.            for y-axis ticks.
  412.  
  413.          UC [[pen_control ,] x_delta , y_delta] ...
  414.  
  415.            User character - UC specifies a  user defined character.  The  pen
  416.            control number is 99 for pen down or -99 for pen up. Pen movements
  417.            are relative, with x_delta in units of 1/4 the character width and
  418.            y_delta in units of 1/8 the character height.
  419.  
  420.          VA
  421.  
  422.            Adaptive velocity - IGNORED                                       
  423.  
  424.                                                                          p-10
  425.          VN
  426.  
  427.            Normal velocity - IGNORED
  428.  
  429.          VS
  430.  
  431.            Pen velocity - IGNORED
  432.  
  433.          WG radius , start_angle , sweep_angle [, chord_angle]
  434.  
  435.            Shade  wedge - WG fills a  wedge centered at the current position.
  436.            The current  pen  position and up/down  state are  unchanged.  The
  437.            wedge edge is not drawn.
  438.  
  439.          XT
  440.  
  441.            X-axis tick - XT draws a  vertical line, with  length specified by
  442.            the  TL  command, at the current  position.  The  pen position and
  443.            up/down state are unchanged.
  444.  
  445.          YT
  446.  
  447.            Y-axis tick - YT draws a horizontal line, with length specified by
  448.            the TL  command, at  the  current position.  The  pen position and
  449.            up/down state are unchanged.
  450.  
  451.          esc.(
  452.          esc.Y
  453.  
  454.            Plotter on  - Esc.( and esc.Y turn the plotter  on.  This is  only
  455.            relevant with the /YY option.
  456.  
  457.          esc.)
  458.          esc.Z
  459.  
  460.            Plotter off - Esc.)  and esc.Z turn the plotter off. They are only
  461.            effective with the /YY option. The plotter on and off commands let
  462.            you  include comments or data to pass through to another device in
  463.            the plotfile.  These are flagged as unsupported commands if /YD is
  464.            set, as an indication that you should set /YY.
  465.  
  466.          esc.@, esc.H, esc.I, esc.M, esc.N, esc.R
  467.  
  468.            RS-232 device control commands - IGNORED                          
  469.  
  470.                                                                          p-11
  471.        HP-GL/2 Commands -----------------------------------------------------
  472.  
  473.          PrintGL's HP-GL/2 commands include a subset of HP-GL/2 that lets you
  474.          take  advantage  of  HP-GL/2's  pen  control  and  data compression.
  475.          PrintGL's HP-GL/2 interpreter reads all of the HP-GL commands above,
  476.          except  as noted below.  PrintGL acts like  an  HP-GL/2 plotter, not
  477.          printer,  so  form feeds are done with the PG command  not the  form
  478.          feed character.
  479.  
  480.          The  LA command  is not supported  - all  lines are drawn with round
  481.          ends and round joints. And all clipping is done to the line center.
  482.  
  483.          When the  output format is  HP-GL  all of the  HP-GL/2 extended  pen
  484.          control commands are  ignored.  The PT command  is needed to  ensure
  485.          solid fills look good.
  486.  
  487.          AC [x , y]
  488.  
  489.            Anchor corner - AC  specifies the origin of  stroked fills.  It is
  490.            handled even with HP-GL/2 off.
  491.  
  492.          BP
  493.  
  494.            Begin plot - BP is interpreted as PG;IN;.  It is handled even with
  495.            HP-GL/2 off.
  496.  
  497.          CO "comment"
  498.  
  499.            Comment - This is handled even with HP-GL/2 off.
  500.  
  501.          CR [black_ref_red , green , blue , white_ref_red , green , blue]
  502.  
  503.            Color range - Sets the color ranges used by the PC command.
  504.  
  505.          DTt[, mode]
  506.  
  507.            Define  label  terminator -  The  HP-GL/2 mode  parameter (0 print
  508.            terminator, 1 do  not print terminator) is handled even if HP-GL/2
  509.            is turned off.
  510.  
  511.          FT [type [, spacing or shading [, angle]]]
  512.  
  513.            Fill type - When reading HP-GL/2, PrintGL accepts type 10 (shading
  514.            percentage is the additional parameter) and 11 (raster fill number
  515.            is the additional parameter).  Type 11 fills are converted to type
  516.            10 with the shade level taken from the RF command.
  517.  
  518.            For solid  and  shaded fill types, to guarantee  good results, you
  519.            must use the PW command to set the pen width  and  this width must
  520.            magnify to no  more than 24 dots in the final image.  If either of
  521.            these rules is broken, the fill may be striped rather than solid.
  522.  
  523.          IR [p1x , p1y [, p2x , p2y]]
  524.  
  525.            Set  scaling points relative - This is handled even if  HP-GL/2 is
  526.            turned off.                                                       
  527.  
  528.                                                                          p-12
  529.          LT [pattern_number [, pattern_length, [mode]]]
  530.  
  531.            Line  type -  HP-GL/2 allows the  additional  parameter to  select
  532.            relative (default)  or absolute  (in mm) pattern lengths.  This is
  533.            handled even with HP-GL/2 off.
  534.  
  535.          NP [number]
  536.  
  537.            Number  of  pens  -  Sets  the number of pens.  This is ignored by
  538.            PrintGL, which can handle up to 256 pens.
  539.  
  540.          PC [pen [, red , green , blue]]
  541.  
  542.            Pen color - Sets the pen color.
  543.  
  544.          PE
  545.  
  546.            Polyline encoded  - This  starts PE mode.  It is handled even with
  547.            HP-GL/2 off.
  548.  
  549.          PT [thickness]
  550.  
  551.            Pen  thickness  -  The  command is  not  part  of  HP-GL/2 and  is
  552.            generally ignored.  If the  output format is HP-GL  or if  you are
  553.            using /Y1 (HP-GL/2 without pen  control) then PT is interpreted as
  554.            it is in HP-GL.
  555.  
  556.          PW [width [, pen]]
  557.  
  558.            Pen width - Sets the  pen width.  After magnification, the maximum
  559.            width is 24 dots. PW is ignored if the output format is HP-GL.
  560.  
  561.          QL
  562.  
  563.            Quality level - IGNORED for HP-GL or HP-GL/2
  564.  
  565.          RF [index [,width, height, pen [.. pen]]
  566.  
  567.            Raster fill - RF is not fully implemented.  Instead it is read and
  568.            the  pattern is  converted to  a shade level.  Pen numbers and the
  569.            specific  pattern are ignored.  The shade level  is saved for  use
  570.            with fill type 11.
  571.  
  572.          RO [angle]
  573.  
  574.            Rotate coordinate system  -  When  reading HP-GL/2,  this  command
  575.            accepts 0, 90, 180, and 270 and always rotates counter-clockwise.
  576.  
  577.          SV [type [, option1 [, option2]]]
  578.  
  579.            Screened vectors - Sets the shade level used  to draw lines.  Only
  580.            modes 0 and 1 are supported.
  581.  
  582.          TR [mode]
  583.  
  584.            Transparency mode - Sets opaque or translucent mode.              
  585.  
  586.                                                                          p-13
  587.          UL [index [,gap1, .., gapn]]
  588.  
  589.            User  line type - UL is not fully implemented.  Instead it is read
  590.            and the pattern is converted  to one  of PrintGL's eight  standard
  591.            line types. The gaps must be less that 256.
  592.  
  593.          WU [type]
  594.  
  595.            Width units - Sets the units used by the PW command.
  596.  
  597.          esc% .. A
  598.  
  599.            Enter PCL or RTL mode -  This command is treated  like esc.).  All
  600.            commands are ignored until the next esc% .. B.
  601.  
  602.          esc% .. B
  603.  
  604.            Enter  HP-GL/2 mode - This command  is treated like esc.(.  It  is
  605.            required before any commands are interpreted.
  606.  
  607.        ADI Commands ---------------------------------------------------------
  608.  
  609.          With the /YA option PrintGL can read Autodesk ADI 4.0 vector plotter
  610.          binary commands intermixed in the HP-GL. 1016 dpi coordinates or the
  611.          current HP-GL user coordinates are assumed. The table shows each ADI
  612.          command  and  the  equivalent  HP-GL  command   (as  interpreted  by
  613.          PrintGL).  In  the ADI code column, the  code  number  and  "b"s are
  614.          bytes,  and  "x" and  "y"  are words.  Eight line  types (other than
  615.          solid) are supported.
  616.  
  617.            ADI command     ADI code     equivalent HP-GL
  618.  
  619.            begin plot      1 b          ignored
  620.            end plot        2            PG;
  621.            move            3 x y        PUx,y;
  622.            draw            4 x y        PDx,y;
  623.            pen             5 b          SPb;
  624.            speed           6 b          ignored
  625.            line type       7 b          if b=0 then LT; else LTb,2;
  626.            raise pen       8            ignored
  627.            abort           9            ignored                              
  628.  
  629.                                                                          p-14
  630.        HP-GL Character Sets -------------------------------------------------
  631.  
  632.          PrintGL  supports all of the character sets that  are included  with
  633.          the HP 7475 and 7440/17440 except Katakana, and adds character set 5
  634.          and  the  proportional  spaced  fonts   from  the  7550.   PrintGL's
  635.          characters are similar to but not identical to HP's.
  636.  
  637.             0  ANSI ASCII                           30  ISO Swedish
  638.             1  9825 character set                   31  ISO Swedish For Names
  639.             2  French/German                        32  ISO Norway Version 1
  640.             3  Scandinavian                         33  ISO German
  641.             4  Spanish/Latin American               34  ISO French
  642.             5  Special Symbols (7550 extension)     35  ISO United Kingdom
  643.             6  JIS ASCII                            36  ISO Italian
  644.             7  Roman Extensions                     37  ISO Spanish
  645.             8  Katakana - NOT SUPPORTED             38  ISO Portuguese
  646.             9  ISO IRV                              39  ISO Norway Version 2
  647.  
  648.          The character sets specify a font for codes 033..127. Codes 000..032
  649.          and 128..255 are independent of the character set and are all no ops
  650.          except these.
  651.  
  652.            003  default label terminator
  653.            008  backspace                 013  carriage return
  654.            009  half backspace            014  select alternate character set
  655.            010  line feed                 015  select standard character set
  656.            011  reverse line feed         032  space
  657.  
  658.          Each of  the  character sets  is available as a proportional font by
  659.          adding 10 to the set number.  The proportional  fonts  are kerned to
  660.          improve  appearance (the character spacing is adjusted to compensate
  661.          for  character shape).  Use the LO  command to simplify working with
  662.          proportional fonts. To improve the appearance of large text, use the
  663.          ES command to reduce the character spacing.
  664.  
  665.          Codes 65 to 81 in character set 5 are symbols designed to be used in
  666.          symbol mode (SM command) or as one character labels.  When used in a
  667.          label (LB command) these characters  are centered at the current pen
  668.          position and leave the pen position unchanged.
  669.                                                                     continued
  670.  
  671.                                                                          p-15
  672.          The  HP-GL  characters  cannot  be  printed  with the standard ASCII
  673.          character set.  The file PRINTGL2.CHR is  an HP-GL file that  can be
  674.          used  to print  a  replacement for this page, showing  the character
  675.          sets. Set up PrintGL with "magnification" "magnify: 1.0", "position"
  676.          "plot:  0.0,0.0  at print origin", and "window/margins" "default" to
  677.          print this plotfile.                                                
  678.  
  679.                                                                          p-16
  680.        Program Interface ----------------------------------------------------
  681.  
  682.          The  following  information lets  you  integrate PrintGL  into  your
  683.          program to print or display plotfiles.  This information is provided
  684.          for experienced programmers only - no user help will be provided.
  685.  
  686.          You may not distribute PrintGL as part of another product or  on the
  687.          same disk with any commercial software (see License). Contact Ravitz
  688.          Software Inc. to inquire about special distribution licenses.
  689.  
  690.          To extend  the PrintGL  setup string, set  up  multiple strings that
  691.          include only complete  options.  Include  in each string  except the
  692.          last the  option /&next_segment, next_offset  to point  to  the next
  693.          string. This links the strings together so that PrintGL can read all
  694.          of the strings.
  695.  
  696.          PrintGL  can  use  your  keyboard/mouse  input  routine  instead  of
  697.          accessing BIOS or Windows  directly.  To use  this feature  add  the
  698.          segment  and offset of your keyboard routine to the /X  option.  The
  699.          routine  must be a far routine that receives one  word  parameter on
  700.          the  stack  and pops the stack on  return  (Pascal convention).  The
  701.          parameter will be:
  702.  
  703.            0 -   routine returns 1 if a key is ready or 0 if no key is ready
  704.            1 -   routine waits for a key and returns it
  705.            100 - PrintGL has returned to text mode
  706.            101 - PrintGL has entered APA screen mode
  707.            102 - PrintGL has opened a destination file
  708.            110 - PrintGL return code is 0 (success)
  709.            111 - PrintGL return code is 1 (failed)
  710.            112 - PrintGL return code is 2 (user break)
  711.  
  712.          Return  values should  be  put in  ax.  Keystroke  values  should be
  713.          identical to those returned by the keyboard BIOS.
  714.  
  715.          100  and 101 let your program know what is on the  screen.  102 lets
  716.          you can count  how many  destination files are  created.  No  return
  717.          value is expected.
  718.  
  719.          PrintGL can also use your screen output routine instead of accessing
  720.          DOS or WIndows.  To use this feature  add the  segment and offset of
  721.          your  output routine  to the /X  option.  If you are using PrintGL's
  722.          keyboard routine, precede it with "0,0,".  The routine must be a far
  723.          routine that receives one pointer on the stack and pops the stack on
  724.          return.  The pointer will point to a length delimited string (Pascal
  725.          string).  No  return information  is  expected.  This  routine  only
  726.          receives PrintGL's text data, not it graphics display data.
  727.  
  728.          You will  need to  switch  to  your  data  segment to  access global
  729.          variables  from these routines.  If you add your data segment as the
  730.          fifth number in the /X option then PrintGL will set  this before  it
  731.          does a callback.  If  you want to use this feature  but not your own
  732.          screen output routine, insert "0,0," instead of the routine address.
  733.  
  734.                                                                     continued
  735.  
  736.                                                                          p-17
  737.          PrintGL  can read  plotfiles files or  call your program  to receive
  738.          data.  To  set  up  a  callback  routine  to transfer  data,  add /G
  739.          segment,offset  to the parameter list to specify the  address of the
  740.          routine.
  741.  
  742.          This routine should, in general, switch to your  data segment,  your
  743.          stack if you need more than 1K, and your program prefix  segment and
  744.          dta if you are using DOS file access  in  the  middle of a callback.
  745.          You  can have PrintGL automatically switch  to your  data segment by
  746.          adding it as the third numeric parameter to the  /G option.  In this
  747.          case, wherever ds would set be  as documented  below, es is  instead
  748.          set.
  749.  
  750.          All parameters are transferred via  register.  The callback  routine
  751.          will be called with these parameters:
  752.  
  753.            open file
  754.  
  755.              ax = $3d00
  756.              cx = 0
  757.              dx = offset of filename
  758.              ds = segment of filename (filename is null delimited string)
  759.  
  760.              returns handle in ax, sets carry flag on error
  761.  
  762.              Since you  set the filename in the PrintGL parameter list, it is
  763.              not important. The returned handle is also not important.
  764.  
  765.            close file
  766.  
  767.              ax = $3e00
  768.              bx = handle
  769.  
  770.            read data
  771.  
  772.              ax = $3f00
  773.              bx = handle
  774.              cx = amount of data desired
  775.              dx = offset of buffer to load data
  776.              ds = segment of buffer to load data
  777.  
  778.              returns amount of data loaded in ax (must be <= cx and >= 1),
  779.              sets carry flag on error
  780.  
  781.              You can return as little as 1 byte of data or as much as cx.
  782.  
  783.          Setting  the  program  prefix  segment  is  accomplished  via  these
  784.          undocumented DOS calls (int $21)
  785.  
  786.            ax = $5100 returns psp in bx
  787.            ax = $5000 and bx = psp sets the psp.